#pragma once
#include <string>
#include <functional>
#include "TcpServer.hpp"

// 管理网络连接信息和缓冲区的结构体
class tcpServer;
struct connItem;
using func_t = std::function<void(connItem *)>; // 使用函数包装器，当然也可以使用函数指针
// typedef void (*func_t)(connItem *);

struct connItem
{
    // 构造函数
    connItem(int sockfd = -1, tcpServer *tcsvptr = nullptr)
        : _sockfd(sockfd), _tcsvptr(tcsvptr) {}

    // 用于注册该连接的对应的读写异常回调方法
    void Register(func_t recver = nullptr, func_t sender = nullptr, func_t execpter = nullptr)
    {
        _recver = recver;
        _sender = sender;
        _execpter = execpter;
    }

    // 文件描述符和读写缓冲区
    std::string _inbuffer;
    std::string _outbuffer;

    // 这个连接对应的读写异常方法
    func_t _recver;
    func_t _sender;
    func_t _execpter;

    // 执行服务器的回调指针
    tcpServer *_tcsvptr;

    int _sockfd;
};
